|
Лабораторная работа № 8 Свойство Canvas |
|
Компоненты-поверхности, на которые программа может выводить графическое изображение, имеют свойство Canvas. Это свойство представляет собой область компонента, на которой можно рисовать или отображать готовый рисунок. Оно доступно только во время работы приложения (т.е. не отображается в окне Инспектора Объектов). Используя данное свойство можно писать текст, рисовать дуги, сектор круга, овал, прямоугольник, ломаную линию, кривую. Каждая точка канвы имеет координаты X и Y. Система координат канвы, как и везде в Delphi, имеет началом левый верхний угол канвы. Координата X возрастает при перемещении слева направо, а координата Y — при перемещении сверху вниз. Координаты измеряются в пикселях. Пиксель — это наименьший элемент поверхности рисунка, с которым можно манипулировать. Важнейшее свойство пикселя — его цвет. Канва имеет свойство Pixels. Это свойство представляет собой двумерный массив, который отвечает за цвета канвы. Например, Canvas.Pixels[10,20] соответствует цвету 10-го слева и 20-го сверху пикселя. С массивом пикселей можно обращаться как с любым свойством: изменять цвет, задавая пикселю новое значение, или определять его цвет по хранящемуся в нем значению. Например, Canvas.Pixels[10,20]:=0 или Canvas.Pixels[10,20]:=clBlack - это задание пикселю черного цвета. Задание: нарисовать по пикселям график синусоиды на канве формы. Создайте проект (названия файлов придумайте сами). Для формы (fmSin) задайте обработчик события OnPaint (прорисовка): procedure TfmSin.FormPaint(Sender: TObject); var X,Y: real; // координаты функции PX,PY: longint; // координаты пикселей beginColor := clWhite; for PX := 0 to ClientWidth do {ClientWidth - ширина текущего компонента} begin {X — аргумент графика, соответствующий пикселю с координатой РХ} X:=PX*4*Pi/ClientWidth; Y:=Sin(X); {PY — координата пикселя, соответствующая координате Y} PY:=trunc(ClientHeight-(Y+1)*ClientHeight/2); {Устанавливается черный цвет выбранного пикселя} Canvas.Pixels[PX,PY]:=clBlack; end; end;
Результат представлен на рисунке. График синусоиды получился не очень хороший, т.к. разбивается на отдельные точки — пиксели.
Данное свойство имеет ряд вложенных свойств. Например, Canvas.Brush - свойство фона: - закраска: установить свойство Canvas.Brush.Color в необходимый цвет, затем задать команду Canvas.FillRect(ClientRect) можно очистить всю рабочую область компонента под заданный цвет. - установка рисунка в качестве фона: свойству Canvas.Brush.Bitmap присвоить переменную с растровым рисунком. Свойства пера содержатся в Canvas.Pen. Здесь можно задать толщину пера: Canvas.Pen.Width:=<толщина в точках>. Задать цвет Canvas.Pen.Color:=<цвет>. Метод Canvas.MoveTo(x,y) устанавливает перо в заданную точку, где x и y - координаты точки, относительно компонента. Точка начала координат [0,0] находится в верхнем левом углу. После этой команды перо установлено, но точка не нарисована. Чтобы провести линию от текущего положения пера до заданного Canvas.LineTo(x,y). Поставить точку определенного цвета на холсте Canvas.Pixels[x,y]:=<цвет точки>.
|
